package leetcode.sort;

import java.util.*;

// 969. 煎饼排序
public class PancakeSort {

    public static void main(String[] args) {
        System.out.println(new PancakeSort().pancakeSort(new int[]{3, 2, 4, 1}));
    }

    public List<Integer> pancakeSort(int[] arr) {

        List<Integer> ret = new ArrayList<Integer>();
        int n = arr.length;
        for (int k = n; k > 1; k--) {
            int index = 0;
            for (int i = 1; i < k; i++) {
                // 找最大值的位置
                if (arr[i] >= arr[index]) {
                    index = i;
                }
            }
            if (index == k - 1) {
                continue;
            }
            // 将前 index个元素翻转，使得当前最大值变为首元素
            reverse(arr, index);
            // 整体翻转，将当前最大值移动到尾部。
            reverse(arr, k - 1);
            ret.add(index + 1);
            ret.add(k);
        }
        return ret;
    }

    public void reverse(int[] arr, int end) {
        for (int i = 0, j = end; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }


}


